// 封装登录方法：获取code -> 调用后端接口 -> 存储用户信息
function login() {
    return new Promise((resolve, reject) => {
        // 1. 调用微信登录接口获取code
        wx.login({
            success: (loginRes) => {
                if (!loginRes.code) {
                    reject("获取code失败");
                    return;
                }

                // 2. 发送code到后端登录接口
                wx.request({
                    url: 'http://localhost:8080/user/login',
                    method: 'POST',
                    data: { code: loginRes.code },
                    success: (res) => {
                        if (typeof res.data !== 'object') {
                            reject("登录失败：接口返回格式错误");
                            return;
                        }
                        // 严格校验业务状态码和数据结构
                        if (res.data.code === 200) {
                            if (res.data.data && res.data.data.id) { // 确保用户ID存在
                                const user = res.data.data;
                                wx.setStorageSync('userInfo', user);
                                wx.setStorageSync('userId', user.id);
                                resolve(user);
                            } else {
                                reject("登录失败：用户信息不完整");
                            }
                        } else {
                            // 携带具体错误码，便于排查问题
                            reject(`登录失败[${res.data.code}]：${res.data.msg || "未知错误"}`);
                        }
                    },
                    fail: (err) => {
                        reject("接口请求失败：" + err.errMsg);
                    }
                });
            },
            fail: (err) => {
                reject("wx.login失败：" + err.errMsg);
            }
        });
    });
}

module.exports = { login };